class UserGuide:
    def __init__(self):
        self.help_text = {
            "command_line_params": {
                "-p": "用于指定待检测的项目路径。",
                "-o": "指定输出报告的路径。",
                "check": "启动检测程序。"
            },
            "example_input_output": {
                "input": [
                    "假设用户有一个 Java 项目位于'/path/to/your/project'。在命令行中输入检测工具命令时，可以这样操作：'toolname -p /path/to/your/project'。",
                    "如果用户想要将检测结果输出到特定的文件中，可以使用如下命令：'-p /path/to/your/project -o /path/to/output/report.txt check' "
                ],
                "output": [
                    "检测完成后，输出的报告可能会包含以下信息：",
                    "    - 代码中的潜在漏洞数量及类型。例如：'发现 2 个 SQL 注入漏洞，3 个跨站脚本漏洞。'",
                    "    - 具体的漏洞位置。会给出出现漏洞的文件路径和行号，以便用户快速定位问题。例如：'漏洞位于 /src/main/java/com/example/MyClass.java:45'。",
                    "    - 对漏洞的简要描述。帮助用户理解漏洞的危害和影响。例如：'SQL 注入漏洞可能导致数据库被恶意攻击者访问和篡改。'"
                ]
            },
            "faq": {
                "检测工具支持哪些编程语言？": "目前支持 Java、Python、Go等常见编程语言。",
                "检测结果的准确性如何？": "检测工具经过严格测试和验证，但由于代码的复杂性和多样性，可能存在一定的误报和漏报情况。建议用户结合实际情况进行分析和判断。",
                "如何提高检测的效率？": "可以在检测前关闭不必要的后台进程，减少系统资源占用。同时，确保输入的源代码结构清晰，避免过多的复杂嵌套和冗余代码。"
            },
            "troubleshooting": [
                "如果用户在使用检测工具时遇到错误提示，可以首先检查以下几个方面：",
                "    - 命令行参数是否正确输入。确保参数的拼写和格式正确，并且路径指向有效的位置。",
                "    - 检测工具是否具有足够的权限访问源代码和输出报告的位置。如果遇到权限问题，可以尝试以管理员身份运行工具或者调整文件权限。",
                "    - 检查系统环境是否满足检测工具的要求。例如，某些工具可能需要特定的运行时环境或库文件。如果缺少必要的组件，可以按照工具的文档说明进行安装和配置。",
                "如果问题仍然无法解决，可以参考在线帮助页面或者联系工具的技术支持团队。提供详细的错误信息和操作步骤，以便技术人员更好地帮助你解决问题。"
            ]
        }

    def show_command_line_params(self):
        print("以下是命令行参数说明：")
        for param, description in self.help_text["command_line_params"].items():
            print(f"{param}: {description}")

    def show_example_input_output(self):
        print("示例输入和输出：")
        print("输入：")
        for example in self.help_text["example_input_output"]["input"]:
            print(f"    {example}")
        print("输出：")
        for example in self.help_text["example_input_output"]["output"]:
            print(f"    {example}")

    def show_faq(self):
        print("常见问题解答（FAQ）：")
        for question, answer in self.help_text["faq"].items():
            print(f"Q: {question}\nA: {answer}\n")

    def show_troubleshooting(self):
        print("故障排除指南：")
        for step in self.help_text["troubleshooting"]:
            print(f"    {step}")



#帮助文档展示
guide = UserGuide()
app_on = 0

user_choice = input("输入begin启动程序，输入help查看说明（第一次使用请查看），输入quit结束程序: ")

while user_choice == 'help':
    # 显示命令行参数帮助说明
    guide.show_command_line_params()

    # 显示示例输入和输出
    guide.show_example_input_output()

    # 显示常见问题解答
    guide.show_faq()

    # 显示故障排除指南
    guide.show_troubleshooting()

    print('\n')

    user_choice = input("输入begin启动程序，输入help查看说明（第一次使用请查看），输入quit结束程序: ")

if user_choice == "begin":
    app_on = 1
    

elif user_choice=="quit":
    print("感谢使用")
    exit(0)    # 退出程序，返回状态码0

if app_on==1:
    #转入程序模块
    user_in=input("请按照指定格式输入:")
    #print(user_in[user_in.rfind('-p ')+3:user_in.rfind("-o ")])
    #print(user_in[user_in.rfind('-o ')+3:user_in.rfind("check")])
    program_road = user_in[user_in.rfind('-p ')+3:user_in.rfind("-o ")]   #获取待检测程序路径
    output_road = user_in[user_in.rfind('-o ')+3:user_in.rfind("check")]  #获取检测报告生成路径

    #如果有错误检测报告
    #print('请检查格式再尝试')










